package com.marveal.rabbit.api;

import com.marveal.rabbit.api.exception.MessageRuntimeException;

import java.util.List;


/**
 * $MessageProducer 消息生产者
 */
public interface MessageProducer {

    /**
     * 发送消息
     *
     * @param message 消息体
     * @throws MessageRuntimeException 异常捕获
     */
    public void send(Message message) throws MessageRuntimeException;

    /**
     * 批量发送消息
     *
     * @param messageList 消息列表
     * @throws MessageRuntimeException 异常捕获
     */
    public void send(List<Message> messageList) throws MessageRuntimeException;


    /**
     * 发送消息，附带SendCallback回调执行相应的业务逻辑处理
     *
     * @param message  消息
     * @param callback 回调
     * @throws MessageRuntimeException 异常捕获
     */
    public void send(Message message, SendCallback callback) throws MessageRuntimeException;

}
